﻿using Microsoft.Win32;
using SportComplex.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace SportComplex.Program.Pages.EditAddPages
{
    /// <summary>
    /// Логика взаимодействия для EditAddSection.xaml
    /// </summary>
    public partial class EditAddSection : Page
    {
        // Поле для хранения экзепляра добавляемой секции (передаем объект класса Section)
        private Model.Section section = new Model.Section();

        public EditAddSection(Model.Section selectSection)
        {
            InitializeComponent();

            if (selectSection != null)
                section = selectSection;

            // Передача объекта класса для участия в привязке данных
            DataContext = section;
        }


        // Смена фотографии секции
        private void ChangeImageSectionBtn_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofg = new OpenFileDialog();
            if (ofg.ShowDialog() == true && !String.IsNullOrWhiteSpace(ofg.FileName))
            {
                InputPhotoSectionTxb.Text = ofg.FileName.ToString();
                InputPhotoSectionTxb.Focus();
            }
        }

        // Вернуться назад
        private void BackBtn_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new View());
        }

        // Сохранение секции
        private void SaveSectionBtn_Click(object sender, RoutedEventArgs e)
        {
            // Предварительная проверка на количесто символов, заполняемость
            StringBuilder errors = new StringBuilder();
            if (string.IsNullOrWhiteSpace(section.name))
                errors.AppendLine("* Название услуги не введено!");
            foreach (var record in Entities.GetContext().Section)
            {
                if (record.name == section.name)
                    errors.AppendLine("* Такое название секции уже существует!");
            }
            if (section.duration == 0)
                errors.AppendLine("* Длительность должно составлять определенное кол-во времени");
            if (section.duration > 14400)
                errors.AppendLine("* Длительность не может быть более 4-х часов!");
            if (section.cost == 0)
                errors.AppendLine("* Стоимость не может быть равна значению '0'");
            if (section.cost > 100)
                errors.AppendLine("* Скидка не может быть больше 100%");

            // Если есть ошибки, то вывести это
            if (errors.Length > 0)
            {
                MessageBox.Show(errors.ToString());
                return;
            }

            // Добавлить новую запись
            if (section.ID_section == 0)
                Entities.GetContext().Section.Add(section);

            try
            {
                Entities.GetContext().SaveChanges();
                MessageBox.Show("Данные сохранены");

                NavigationService.Navigate(new View());
            }
            catch (Exception ex)
            { MessageBox.Show(ex.Message); }
        }

        // Обработчик на запрет ввода букв в строку стоимости
        private void InputCostSectionTxb_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key < Key.D0 || e.Key > Key.D9) e.Handled = true;
        }

        // Обработчик на запрет ввода букв в строку скидки
        private void InputDiscountSectionTxb_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key < Key.D0 || e.Key > Key.D9) e.Handled = true;
        }
    }
}
